/**
 * 融资服务接口 - 融资申请和评估的核心业务接口
 *
 * 开发人员：马勇俐
 * 开发时间：2025-11-16 至 2025-11-20
 * 模块职责：定义融资申请的完整业务流程接口，支持申请创建、评估、审批等核心功能
 *
 * 技术要点：
 * - 融资申请的全生命周期管理
 * - 融资评估和评分机制
 * - 融资渠道管理和成本计算
 * - 财务健康状况评估分析
 * - 多租户融资数据隔离和管理
 *
 * 开发故事：负责融资服务接口的设计和定义，与融资控制器和AI分析服务深度配合，为企业提供专业的融资申请和评估服务。
 */
package com.pbl.service;

import com.pbl.entity.FinancingRequest;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface FinancingService {
    /**
     * 创建融资申请
     * @param enterpriseId 企业ID
     * @param userId 用户ID
     * @param requestedAmount 申请金额
     * @param purpose 融资用途
     * @return 融资申请对象
     */
    FinancingRequest create(Long enterpriseId, Long userId, BigDecimal requestedAmount, String purpose);

    /**
     * 更新融资评分
     * @param id 融资申请ID
     * @param score 评分
     * @return 更新后的融资申请对象
     */
    FinancingRequest updateScore(Long id, BigDecimal score);

    /**
     * 获取融资申请详情
     * @param id 融资申请ID
     * @return 融资申请对象
     */
    FinancingRequest get(Long id);

    /**
     * 获取企业融资申请列表
     * @param enterpriseId 企业ID
     * @return 融资申请列表
     */
    List<FinancingRequest> listByEnterprise(Long enterpriseId);

    /**
     * 评估融资申请（AI增强版）
     * @param requestId 融资申请ID
     * @return 评估结果和建议
     */
    Map<String, Object> evaluateFinancingRequest(Long requestId);

    /**
     * 获取融资渠道列表
     * @param enterpriseId 企业ID
     * @return 融资渠道列表
     */
    List<Map<String, Object>> getFinancingChannels(Long enterpriseId);

    /**
     * 获取财务健康状况
     * @param enterpriseId 企业ID
     * @return 财务健康分析结果
     */
    Map<String, Object> getFinancialHealth(Long enterpriseId);

    /**
     * 计算融资成本
     * @param requestId 融资申请ID
     * @param channelType 渠道类型
     * @return 成本计算结果
     */
    Map<String, Object> calculateFinancingCost(Long requestId, String channelType);

    /**
     * 获取融资推荐
     * @param enterpriseId 企业ID
     * @return 融资推荐结果
     */
    Map<String, Object> getFinancingRecommendations(Long enterpriseId);
}
